#ifndef MATERIAL_H
#define MATERIAL_H

#include <glm/glm.hpp>

#include <string>

using std::string;
using glm::vec3;

class Material
{
public:
   
    // Functions.
    explicit Material(const string& material);
    ~Material();

    string getName() const;
    vec3 getAmbientColor() const;
    vec3 getDiffuseColor() const;
    vec3 getSpecularColor() const;
    float getAlpha() const;
    float getSpecularCoeff() const;
    string getTexture() const;
    string getNormalmap() const;
    string getBumpmap() const;
    float getBumpDepth() const;
    bool isEmissive() const;

private:

    // Disable copying.
    Material(Material const& rhs);
    Material&operator=(Material const& rhs);

    // Functions.
    void loadMaterial();

    // Variables.
    string m_materialName;

    vec3 m_ambient;
    vec3 m_diffuse;
    vec3 m_specular;
    float m_alpha;
    float m_specularCoeff;
    string m_texture;
    string m_normalmap;
    string m_bumpmap;
    float m_bumpDepth;
    bool m_emissive;
};

#endif // MATERIAL_H